#ifndef ___fat32_conexiones_transacciones_funciones_auxiliares_1

#define ___fat32_conexiones_transacciones_funciones_auxiliares_1 1

#include "f32_acon.c"
#include "f32_base.c"

unsigned int fat32_obtener_nueva_conexion_para_transaccion(unsigned int);

unsigned int fat32_obtener_nueva_conexion_para_transaccion (unsigned int transaccion) {
  unsigned int conexion = fat32_obtener_conexion_disponible();
  if (conexion) {
    fat32_conexion_transaccion datosConexion;
    datosConexion.transaccion = transaccion;
    datosConexion.conexion = conexion;
    fat32_recursos.conexiones = fb_cambiar_tamano(fat32_recursos.conexiones, sizeof(fat32_conexion_transaccion),
                                                  ++ fat32_recursos.cantConexiones);
    fat32_recursos.conexiones[fat32_recursos.cantConexiones - 1] = datosConexion;
    return conexion;
  }
  fat32_bloqueo nuevoBloqueo;
  nuevoBloqueo.tipoEvento = 4;
  nuevoBloqueo.transaccionBloqueada = transaccion;
  unsigned int posicion;
  for (posicion = 0; posicion < fat32_cantidad_bloqueos; posicion ++)
    if (!fat32_bloqueos[posicion].tipoEvento) break;
  if (posicion == fat32_cantidad_bloqueos)
    fat32_bloqueos = fb_cambiar_tamano(fat32_bloqueos, sizeof(fat32_bloqueo), ++ fat32_cantidad_bloqueos);
  fat32_bloqueos[posicion] = nuevoBloqueo;
  return 0;
}

#endif